Дано целое
неотрицательное число n. Составьте из
всех его цифр наибольшее, а затем наименьшее число. Выведите сумму этих двух
чисел.
Например,
для n = 56002 наибольшим будет 65200,
а наименьшим 256 (ведущие нули в числе 00256 не учитываются). Искомая сумма
равна 65200 + 256 = 65456.
Вход. Одно
целое число n (0 ≤ n ≤ 108).
Выход. Выведите
сумму наибольшего и наименьшего чисел, которые можно получить из числа n перестановкой его цифр.
|
Пример входа |
Пример выхода |
|
56002 |
65456 |
сортировка
Читаем
входное число в символьный массив. Отсортируем его цифры по убыванию – получим
наибольшее число и запишем его в переменную a. Затем отсортируем цифры по возрастанию – получим
наименьшее число и запишем его в переменную b. После этого вычислим сумму чисел a и b.
Реализация алгоритма
Строку s
используем для хранения входного числа.
char s[20];
Читаем
входное число и сохраняем его в символьный массив s.
gets(s);
Сортируем
цифры по убыванию и записываем полученное максимальное число в переменную a.
sort(s,s + strlen(s),greater<char>());
sscanf(s,"%d",&a);
Затем
сортируем цифры по возрастанию и записываем полученное минимальное число в
переменную b.
sort(s,s + strlen(s),less<char>());
sscanf(s,"%d",&b);
Выводим
сумму чисел.
printf("%d\n", a +
b);
Реализация алгоритма – string
Читаем входное число как строку.
cin
>> s;
Сортируем цифры по убыванию и
записываем полученное максимальное число в переменную a.
sort(s.begin(),s.end(),greater<char>());
a = stoi(s);
Затем сортируем цифры по возрастанию
и записываем полученное минимальное число в переменную b.
sort(s.begin(),s.end(),less<char>());
b = stoi(s);
Выводим сумму чисел.
cout
<< a + b << endl;
Java реализация
import
java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
String s[] = con.nextLine().split("");
// s = {"1", "2",
"3", "4", "5", "6"}
Arrays.sort(s);
int a =
Integer.parseInt(String.join("", s));
Arrays.sort(s,Collections.reverseOrder());
int b =
Integer.parseInt(String.join("", s));
System.out.println(a + b);
con.close();
}
}
Java реализация – stringbuilder reverse
import
java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
char s[] = con.next().toCharArray();
Arrays.sort(s);
int a =
Integer.parseInt(String.valueOf(s));
String sr = new
StringBuilder(String.valueOf(s)).reverse().toString();
int b =
Integer.parseInt(sr);
System.out.println(a + b);
con.close();
}
}
Python реализация
Читаем
входное число как строку и сортируем символы этой строки в порядке возрастания,
возвращая список символов.
n = sorted(input())
Складываем полученное число с его “зеркальной” версией.
print(int(''.join(n)) + int(''.join(n)[::-1]))